#ifndef ITEM_H
#define ITEM_H

#include <QObject>
#include <QWidget>

#include "qvector.h"
#include "qpoint.h"
#include "qpainter.h"
#include <QAudioOutput>

enum ITEM_TYPE{
    ITEM_1 = 0,        //长条
    ITEM_2,            //山字形
    ITEM_3,            //手枪形1
    ITEM_4,            //手枪形2
    ITEM_5,            //田
    ITEM_6,            //Z字形1
    ITEM_7,         //S

    ITEM_MAX,
};

class Item
{

public:
    Item(){}
    Item(ITEM_TYPE t,int nShape = 0); //类型和形状构造
    ~Item(void){};

    void InitNew(int nSeed = 0); //根据随机因子nSeed, 初始化方块类形的种类及形状
    void InitItem(ITEM_TYPE t,int nShape = 0); //根据方块类形的种类及形状，初始化方块类形的坐标
    void ChangeShape(int nAdd = 1);  //改变文块类形形状, 默认按顺续改变形状

    void AddPoints(QVector<QPoint>& points); //添加方块格子坐标
    void Move(int x,int y);             //横向移动x格,竖向移动y格
    void MoveTo(int x,int y);           //移动到位置(x,y)格
    void MoveDown(int nRow,int y);        //第nRow行以上的部分下移y行，用在消格之后

    void Draw(QPainter& painter,int nStartX,int nStartY,int nW,int nH);  //根据方块格子的起始位置座标，长，宽，画出方块格子
    void DeleteRow(int y);             //删除第y行

public:
    QVector<QPoint> mPoints;    //方块类型4个方块格子的坐标
    QPoint mPos;  //方块类型原点
    ITEM_TYPE mType;    //方块类型，有6种类型
    int mShape;         //方块形状，每个类型方块有1~4个形状态，

};

#endif // ITEM_H
